﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using MembresiaService.Dominio;
using System.Messaging;
using MembresiaService.Persistencia;

namespace MembresiaService
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "Service1" en el código, en svc y en el archivo de configuración.
    public class Membresias : IMembresias
    {
        private MensajeDAO dao = new MensajeDAO();

        public void CrearMensaje(Mensaje mensajeACrear)
        {
            string rutaColaIn = @".\private$\Ofertantes";
            if (!MessageQueue.Exists(rutaColaIn))
                MessageQueue.Create(rutaColaIn);
            MessageQueue colaIn = new MessageQueue(rutaColaIn);
            Message mensajeIn = new Message();
            mensajeIn.Label = "Pedidos";
            mensajeIn.Body = new Mensaje() { DscMensaje = mensajeACrear.DscMensaje, FechMensaje =mensajeACrear.FechMensaje , CodOfertante = mensajeACrear.CodOfertante, CodContratante = mensajeACrear.CodContratante };
            colaIn.Send(mensajeIn);
        }

        public List<Mensaje> BandejaDeEntrada(string idOfertante)
        {
            string rutaColaIn = @".\private$\Ofertantes";
            if (!MessageQueue.Exists(rutaColaIn))
                MessageQueue.Create(rutaColaIn);
            MessageQueue colaIn = new MessageQueue(rutaColaIn);
            colaIn.Formatter = new XmlMessageFormatter(new Type[] { typeof(Mensaje) });
            Message[] mensajes = colaIn.GetAllMessages();

            foreach (Message msg in mensajes)
            {
                Message men = msg;
                Mensaje p = (Mensaje)men.Body;
                if (p.CodOfertante==int.Parse(idOfertante))
                {
                    //crear mensaje
                    dao.CrearMensaje(p);
                    men = colaIn.Receive();
                }

            }
            return dao.ListarBandejaDeEntrada(int.Parse(idOfertante));
        }

    }
}
